#pragma once

#include <qvector3d>

class Camera
{
public:

	Camera(){
		setUp(QVector3D(0.0, 1.0, 0.0));
		setDirection(QVector3D(0.0, 0.0 , -1.0));
		setCenter(QVector3D(0.0, 0.0, 0.0));
		m_fViewRadius = 1.0;
		m_fRadiusThreshold = 0.1;
	}

	void StrafeUp(double amount);
	void StrafeDown(double amount);
	void StrafeLeft(double amount);
	void StrafeRight(double amount);

	void RotateUp(double theta);
	void RotateDown(double theta);
	void RotateLeft(double theta);
	void RotateRight(double theta);

	void ZoomIn(double amount);
	void ZoomOut(double amount);

	void AbsoluteZoom(double amount);


	QVector3D getCenter();
	QVector3D getUp();
	QVector3D getDirection();
	QVector3D getEye();

	void setCenter(QVector3D c){m_vLookAt = c;}
	void setUp(QVector3D u){m_vUp = u;}
	void setDirection(QVector3D d){m_vDirection = d;}
	


private:
	QVector3D m_vUp;
	QVector3D m_vDirection;
	QVector3D m_vLookAt;
	double	m_fViewRadius;
	double	m_fRadiusThreshold;
		
};
